#pragma once
#include "Common/DuplicateDefine.h"


//副本状态
class IDuplicateState
{
protected:
	//获取副本状态
	virtual int8_t GetDuplicateState();
	//设置副本状态
	virtual bool SetDuplicateState(int8_t byState);
	//增加状态
	virtual void AddDuplicateState(int8_t byState);
	//删除状态
	virtual void DelDuplicateState(int8_t byState);
	//清空状态
	virtual void ClearDuplicateState();
protected:
	virtual void OnDuplicateState_Ready(){}
	virtual void OnDuplicateState_Begin(){}
	virtual void OnDuplicateState_Finish(){}
	virtual void OnDuplicateState_Flop(){}
	virtual void OnDuplicateState_Clean(){}
	virtual void OnDuplicateState_Destory(){}
	virtual void UpdateState(){}
public:
	IDuplicateState();
	virtual ~IDuplicateState();
private:
	//状态改变
	void OnStateChanged(int8_t byNewState);
private:
	int8_t m_byState;
	SET_INT32 m_setState;
};